package cn.edu.tcu.controller.admin;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

import cn.edu.tcu.bean.AdminBean;
import cn.edu.tcu.dao.admin.DaoFactory;
import cn.edu.tcu.myutils.MyUtil;

@WebServlet("/AdminInfoAddServlet")
@MultipartConfig(maxFileSize = 1024 * 1024 * 5)
public class AdminInfoAddServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 清空修改使用的session中缓存的内容(防止新增操作看到修改操作的内容)

		request.getSession().removeAttribute("modifyAdminB");

		// 获取客户端request表单数据

		AdminBean adminB = MyUtil.convertRequestParameter2Bean(request, AdminBean.class, "updatefiles/adminImgs/",
				"admin");
		MyUtil.logRootLogger.info("转换的Bean：" + adminB.toString());
		/////////////////////////

		// servlet 3.0 文件上传处理

		/*
		 * // 获取request中的文件内容部分对象
		 * 
		 * Part fPart = request.getPart("adminImg");
		 * 
		 * // 进行文件上传处理
		 * 
		 * if(fPart != null){
		 * 
		 * // 打印上传文件的相关信息
		 * 
		 * System.out.println("getContentType:"+fPart.getContentType());
		 * 
		 * System.out.println("getName:"+fPart.getName());
		 * 
		 * System.out.println("getSubmittedFileName:"+fPart.getSubmittedFileName
		 * ());
		 * 
		 * System.out.println("getSize:"+fPart.getSize());
		 * 
		 * 
		 * 
		 * // 将文件二进制字节流保存到服务器的指定目录下
		 * 
		 * // 获取网站的根目录（相对于服务器的盘符）
		 * 
		 * String realPath = request.getServletContext().getRealPath("/");
		 * 
		 * MyUtil.logRootLogger.info("上传文件保存路径："+realPath);
		 * 
		 * // 获取文件上传是提交的文件名
		 * 
		 * String fileSubmitName = fPart.getSubmittedFileName();
		 * 
		 * // 提取保存文件的后缀类型
		 * 
		 * String fileType =
		 * fileSubmitName.substring(fileSubmitName.lastIndexOf('.'));
		 * 
		 * // 重新组合保存文件的文件名：admin_用户名_随机码.文件后缀
		 * 
		 * String fileSaveName =
		 * "admin_"+adminB.getAdminName()+"_"+UUID.randomUUID().toString()+
		 * fileType;
		 * 
		 * MyUtil.logRootLogger.info("上传文件名："+fileSaveName);
		 * 
		 * //保存的文件路径（相对于根路径的文件路径名）
		 * 
		 * String fileSavePath = "updatefiles/adminImgs/"+fileSaveName;
		 * 
		 * System.out.println("======:"+realPath+fileSaveName);
		 * 
		 * // 如果存储上传文件的文件夹不存在，则创建文件夹
		 * 
		 * File f = new File(realPath + "updatefiles/adminImgs/");
		 * 
		 * if (!f.exists()) {
		 * 
		 * f.mkdirs();
		 * 
		 * }
		 * 
		 * // 上传文件
		 * 
		 * fPart.write(realPath+fileSavePath);
		 * 
		 * // 将文件保存的路径赋值给bean实体的属性
		 * 
		 * adminB.setAdminImg(fileSavePath);
		 * 
		 * }
		 */
		////////////////////////

		// 调用dao层进行数据库保存处理

		int i =  DaoFactory.getAdminDaoInstance().saveOrUpdateAdminInfo(adminB);

		MyUtil.logRootLogger.info("数据保存结果：" + i);
		// 保存成功之后的数据转发处理

		if (i > 0) {
			// 保存成功

			// 查询获取要显示的数据集合

			List<AdminBean> lstAdmins = DaoFactory.getAdminDaoInstance().getAllAdminInfo(0);
			// 将查询的结果集缓存到session中，在前端使用el表达式进行解析显示

			request.getSession().setAttribute("lstAdmins", lstAdmins);
			// 跳转数据保存成功页面

			response.sendRedirect("adminLogined/adminInfoMan/adminInfoAddDetail.jsp");
		} else {
			// 跳回数据新增页面

			response.sendRedirect("adminLogined/adminInfoMan/adminInfoAdd.jsp");
		}
	}

}